package com.hvgroup.modules.sanic.service.impl.chat.chat;

import com.hvgroup.modules.sanic.service.impl.chat.EventData;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * Dify 流式问题节点处理器
 * 负责处理 Dify 平台的“节点开始”事件，产出新 EventData
 */
@Slf4j
@Component
@RequiredArgsConstructor
public class DifyQuestionHandler extends DifyHandler implements EventHandler {


    /**
     * 事件类型判定：只处理“节点开始”类型事件
     */
    @Override
    public boolean supports(Map<String, Object> eventMap) {
        try {
            String event = processStr().apply(eventMap, dify.getEvent());
            return dify.getNodeStart().getKey().equals(event);
        } catch (Exception e) {
            log.error(e.getMessage(), e);
            return false;
        }
    }

    /**
     * 流递进：处理命中事件，生成带递增step的新EventData
     */
    @Override
    public EventData handle(Map<String, Object> eventMap, EventData preData) {
        String value = processStr().apply(eventMap, dify.getNodeStart().getValue());
        // 返回递进数据（业务文本、原始数据、递增step）
        return EventData.buildNext(preData)
                .apply(EventData.builder().text(value));
    }

}
